package Mundo;

public class StackAbstracto implements Stack{

	//-----------------------------------------------------------------
    // Atributos
    //-----------------------------------------------------------------
	
	/**
	 * Vector que contiene los datos
	 */
	public Object[] stack = new Object[100];
	
	/**
	 * Tamaño actual del vector
	 */
	public int tam;
	
	//-----------------------------------------------------------------
    // Constructores
    //-----------------------------------------------------------------
	
	/**
	 * Constructor del Stack
	 */
	public StackAbstracto()
	{
		tam = 0;
	}
	
	// -----------------------------------------------------------------
    // Métodos
    // -----------------------------------------------------------------
	
	/**
	 * Declara si la pila está vacía
	 * @return true si está vacía
	 * @return false si tiene algún elemento
	 */
	public boolean empty() 
	{
		if (tam == 0)
			return true;
		return false;
	}

	/**
	 * Obtiene el primer objeto en la pila
	 * @return Object
	 */
	public Object getFirst() 
	{
		if (tam == 0)
			return null;
		Object elemento = stack[tamano()-1];
		return elemento;
	}

	/**
	 * Obtiene y retorna el último objeto
	 * @return Object
	 */
	public Object pop() 
	{
		if (tam == 0)
			return null;
		Object elemento = getFirst();
		tam--;
		return elemento;
	}

	/**
	 * Guarda el objeto que se le da de parámetro en el vector
	 * @param Object
	 */
	public void push(Object num) 
	{
		stack[tam] = num;
		tam++; 
	}

	/**
	 * Da el tamaño actual del vector
	 * @return int
	 */
	public int tamano() 
	{		
		return tam;
	}

}
